//package com.conceal.client.socketandnats;
//
//import static io.nats.client.Constants.ERR_SLOW_CONSUMER;
//import java.io.IOException;
//import java.nio.charset.Charset;
//import java.util.concurrent.TimeoutException;
//import javax.annotation.PostConstruct;
//import javax.annotation.PreDestroy;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.apache.log4j.Logger;
//import io.nats.client.AsyncSubscription;
//import io.nats.client.Connection;
//import io.nats.client.ConnectionFactory;
//import io.nats.client.ExceptionHandler;
//import io.nats.client.Message;
//import io.nats.client.MessageHandler;
//import io.nats.client.NATSException;
//
//@Component
//public class WxNatsSubscriber implements MessageHandler, ExceptionHandler {
//	private AsyncSubscription as;
//	
//	@Value("${nats_url}")
//	private String nats_url;//nats监听服务器地址
//	
//	@Value("${nats_client_subject}")
//	private String nats_subject;//nats 监听的主题
//	
//	protected static Logger log = Logger.getLogger(WxNatsSubscriber.class);
//	
//	/**
//     * 开始监听Nats消息
//     */
//    protected void startListen() {
//    	String url=nats_url;
//    	log.info(String.format("Load NatsSubscriber for wx on %s for subject '%s'", url, nats_subject));
//        ConnectionFactory cf= new ConnectionFactory(url);
//        try{
//        	Connection c = cf.createConnection();
//            c.setExceptionHandler(this);
//            as = c.subscribeAsync(nats_subject, this);
//            as.start();
//            
//        } catch (IOException | TimeoutException e) {
//            System.err.println("Couldn't connect: " + e.getMessage());
//            System.exit(-1);
//        }
//    }
//	@Override
//	public void onException(NATSException e) {
//		// TODO Auto-generated method stub
//		 if (e.getCause() instanceof IOException) {
//	            if (ERR_SLOW_CONSUMER.equals(e.getCause().getMessage())) {
//	                System.err.println("Warning: SLOW CONSUMER");
//	            }
//	        } else {
//	            e.printStackTrace();
//	        }
//	}
//
//	@Override
//	public void onMessage(Message msg) {
//		// TODO Auto-generated method stub
//		 String data=new String(msg.getData(), Charset.forName("UTF-8"));
//		System.out.println("收到nats消息："+data);
//		
//	}
//	
//	 @PostConstruct
//	public void init(){
//        try {
//        	startListen();
//        } catch (Exception ex) {
//        	ex.printStackTrace();
//            log.error(ex);
//        } finally {
//        }
//	}
//	    
//	@PreDestroy
//	private void cleanUp(){
//		if(as!=null){
//			// 关闭对nats的订阅
//			try {
//				as.unsubscribe();
//				as.close();
//			} catch (Exception e) {
//			}
//		}
//	}
//
//}
